Jump To:
Technical Q&As
Carbon is a set of APIs that enables C and C++ developers to take advantage of Mac OS X-specific features, including an advanced user interface tool kit, an efficient event-handling mechanism, the Quartz 2D graphics library, and multiprocessing support. In addition, other industry-standard C and C++ APIs are easily available to Carbon developers, providing access to such services as the OpenGL drawing system, the Mach microkernel, and BSD operating-system services. Because Carbon is a collection of C programming interfaces, developers can use virtually any Macintosh C development environment that supports PowerPC to build Carbon applications.

Carbon Resources
A guided introduction and learning path for developers new to Carbon.   Essential information for developers using procedural C.   Descriptions of procedural C programming interface elements.
Document Descriptions
On Off
Display

Sort by
Title
Sort by
Topic
Sorted by
Date
The "/.vol" directory and "volfs" (HTML) ()
QA1113: Describes how the Carbon File Manager interacts with BSD via "volfs" and the "/.vol" directory.
File Management 2002-02-14
Current GDevice Dependencies (HTML) ()
QA1115: Describes potential problems with creating windows or ports when the current GDevice isn't the main device.
Games, Graphics & Imaging, Porting 2002-02-13
Power Management; Policy Maker vs. Power Controller (HTML) ()
QA1121: Describes the differences between a Power Management Policy Maker and a Power Management Power Controller.
Events & Other Input, Process Management 2002-02-13
Static linking of user binaries on Mac OS X (HTML) ()
QA1118: Explains why static linking of user binaries is not supported on Mac OS X, and possible workarounds.
Runtime Architecture 2002-02-07
Using AppleScript to send an email with an attachment (HTML) ()
QA1018: Explains how to send an attachment with an email message using an AppleScript.
Interapplication Communication 2002-01-04
Is QuickTime thread-safe? (HTML)
QA1088: Discusses thread-safety and reentrancy of the QuickTime library on both Mac & Windows.
Design Guidelines, Process Management 2001-11-01
Adding an automated Window menu to your application (HTML)
QA1080: Explains how to add an automated Window menu to your Carbon application.
Design Guidelines, Human Interface Toolbox 2001-10-30
Enabling the application menu's "Preferences..." menu item on Mac OS X (HTML)
QA1079: Explains how to enable the application menu's "Preferences..." menu item on Mac OS X.
Design Guidelines, Human Interface Toolbox 2001-10-30
Getting the User and Computer Name (HTML)
QA1078: Describes how to get the user and computer name on Mac OS X.
Networking 2001-10-30
The intermittent behavior of SetDialogItemText (HTML)
Deprecated - QA1082: Explains why SetDialogItemText may seem to not work correctly if you have embedding turned on.
Human Interface Toolbox 2001-10-30
QuickTime and Carbon Events (HTML)
QA1090: Discusses how to ensure smooth movie playback when using Carbon Events in an application.
Design Guidelines 2001-10-26
Setting environment variables for user processes (HTML)
QA1067: Tells how to set environment variables for user processes.
Data Management, Games, Interapplication Communication, Porting, Process Management, Resource Management, Runtime Architecture, Tools 2001-10-25
Setting the preferred CMM programatically? (HTML)
QA1086: Uses the NCMConcatProfileSet structure to specify the CMM to be used to make the CMWorldRef with the NCWConcatColorWorld function.
Graphics & Imaging 2001-10-24
RunApplicationEventLoop and Thread Manager (HTML)
QA1061: Describes how to yield to cooperative (Thread Manager) threads from a RunApplicationEventLoop-based application.
Process Management 2001-10-10
CGContextClosePath (HTML)
QA1046: Explains when you should call CGContextClosePath.
Graphics & Imaging, Printing 2001-10-02
How to use URL Access with proxy servers (HTML)
Deprecated - QA1074: Explains how to use URL Access with proxy servers.
Networking 2001-10-02
Saving the current Core Graphics Path (HTML)
QA1056: Explains that the Core Graphics save and restore GState APIs do not affect the path.
Graphics & Imaging, Printing 2001-10-02
Avoiding Kernel Event Conflicts (HTML)
QA1063: Documents the namespace for the vendor_code field of the kern_event_msg structure.
Process Management 2001-09-14
Installing input methods on Mac OS X (HTML)
QA1054: Describes how to install and use input methods on Mac OS X.
Human Interface Toolbox, Interapplication Communication, Text & Fonts 2001-09-14
Loading Scripting Additions without initializing AppleScript in Mac OS X (HTML)
QA1070: Explains how to load scripting additions so you can call them using Apple events.
AppleScript 2001-09-13
Carbon Full Screen Conundrums (HTML)
QA1068: Describes the available Mac OS X DrawSprocket services.
Games 2001-08-20
Menus & Hardware Accelerated OpenGL under Mac OS 9 Carbon (HTML)
QA1042: Explains how to handle correctly Mac OS 9 menus when there is hardware accelerated OpenGL blitting.
Human Interface Toolbox 2001-07-10
CGContext Bounds (HTML)
QA1048: Explains how to determine the bounds of a CGContext.
Graphics & Imaging, Printing 2001-07-02
CGContextAddLineToPoint, CGContextAddCurveToPoint, et. al. (HTML)
QA1049: Explains why the CGContextAddXYZ APIs don't draw anything immediately.
Graphics & Imaging, Printing 2001-07-02
Drawing a Path Multiple Times (HTML)
QA1047: Explains that path drawing operations consume the path.
Graphics & Imaging, Printing 2001-07-02
How do I use kMPCreateTaskSuspendedMask with MPCreateTask? (HTML)
QA1055: Describes how to start a task that has been suspended with the ability to resume it later.
Process Management, Runtime Architecture 2001-07-02
How to measure CG text (HTML)
QA1051: Explains how to measure Core Graphics text.
Graphics & Imaging, Printing 2001-07-02
Turning Off Core Graphics Clipping (HTML)
QA1050: Explains how to clear the clipping path for a CGContext.
Graphics & Imaging, Printing 2001-07-02
Unexpected CG state changes (HTML)
QA1045: Explains why the Core Graphics drawing state sometimes changes for no apparent reason.
Graphics & Imaging, Printing 2001-07-02
HID Manager Event Data Underruns (HTML)
QA1038: Explains how to correctly handle HID Manager event queue data underruns.
Apple Applications, User Experience 2001-06-13
How to define a plst resource in a .r file (HTML)
QA1034: Describes how to include a .plist file in a .r file.
Process Management, Runtime Architecture 2001-05-09
Targeting DebuggingCarbonLib asserts (HTML)
Deprecated - QA1033: Describes how to focus DebuggingCarbonLib asserts to a single application.
Runtime Architecture 2001-05-04
OpenGL Texture Sharing Between Contexts (HTML)
QA1031: Describes the process of creating shared OpenGL contexts and sharing textures between these contexts.
Games, Graphics & Imaging 2001-05-01
ICLaunchURL, "file:///" URLs and Mac OS X (HTML)
QA1028: Describes problems with ICLaunchURL and "file:///" URLs on Mac OS X.
Process Management 2001-04-20
Improving ATSUI Text Drawing Performance (HTML)
QA1027: Talks about one way of improving ATSUI text drawing performance.
Graphics & Imaging, Text & Fonts, Typography 2001-04-17
DeviceLoop is for drawing (HTML)
QA1024: Warns of one common misuse of the DeviceLoop API and gives two alternative solutions.
Graphics & Imaging, Porting 2001-04-11
How do I use QuickDraw with CGDirectDisplay? (HTML)
QA1011: Explains how to draw to a CGDirectDisplay-captured display using QuickDraw.
Games, Graphics & Imaging 2001-04-11
Calling AppleScript from an Application (HTML)
QA1026: Describes how to call an AppleScript from an application written in C.
Interapplication Communication 2001-04-10
Disconnected aliases on CD-ROM and Alias Manager (HTML)
OPS05: Explains why aliases may become disconnected on a CD-ROM.
File Management 2001-03-26
dlsDelta field in PRAM's time zone MachineLocation record (HTML) ()
OPS21: Explains how to access and preserve the Daylight Savings state when changing the GMT.
Text & Fonts 2001-03-26
Creating Sub GWorlds using QTNewGWorldFromPtr (HTML)
QA1014: Using QTNewGWorldFromPtr to create sub GWorlds which reference the pixel data of other GWorlds.
QuickTime 2001-03-20
Extracting DV Fields using QTNewGWorldFromPtr (HTML)
QA1017: Describes using QTNewGWorldFromPtr to access individual fields contained within a frame of DV source.
QuickTime 2001-03-20
WaitMouseUp documentation errata (HTML)
QA1008: Specifies the correct behavior of the WaitMouseUp function.
Events & Other Input 2001-02-27
LockPixels and DisposeGWorld with QTNewGWorldFromPtr (HTML)
QA1007: Clarifies some issues surrounding pointer ownership when creating GWorlds with QTNewGWorldFromPtr
QuickTime 2001-02-26
Open File Limits on Mac OS X (HTML) ()
QA1005: Explains how many files an application can open simultaneously in Mac OS X.
Process Management 2001-02-08
BowelsOfTheMemoryManager (aka YourHeapIsProbablyCorrupt) (HTML) ()
Deprecated - ME05: What the symbol BowelsoftheMemoryManager means and the most probable cause of this symbol in MacsBug.
Data Management 2001-02-01
CalcCMask and SeedCFill in Carbon (HTML) ()
QD62: Explains how to use CalcCMask and SeedCFill in Carbon even though Carbon doesn't support OpenPort.
Graphics & Imaging 2000-11-08
GetPortBitMapForCopyBits (HTML) ()
Deprecated - QD61: Describes the proper usage of GetPortBitMapForCopyBits.
Graphics & Imaging 2000-11-08
QDFlushPortBuffer (HTML) ()
QD65: Describes a possible solution for window update problems under Carbon.
Events & Other Input, Graphics & Imaging, Human Interface Toolbox, Porting 2000-11-08
Replacing OpenPort in Carbon (HTML) ()
QD66: Discusses a potential crashing problem when Carbonizing code that uses black and white GrafPorts.
Graphics & Imaging, Porting 2000-11-08
Open Transport Libraries (HTML) ()
NW18: Lists the Open Transport libraries and what to link with for PowerPC and 68K.
Networking 2000-11-03
Detecting Classic and Carbon X Environments (HTML) ()
OV03: Describes how to find out if your application is running in the Classic environment in Mac OS X.
Porting, Runtime Architecture 2000-10-16
Yielding Time Without Getting Events (HTML)
PS06: Describes how to yield processor time to other processes without accepting user interface events.
Process Management 2000-10-16
Correct Setup of an AGLDrawable (HTML)
OGL02: Describes the setup of an AGLDrawable.
Games, Graphics & Imaging 2000-10-04
Appearance Versions (HTML) ()
TB39: Explains how to retrieve the Appearance Manager version and verify the compatibility with the Mac OS version.
Human Interface Toolbox 2000-07-15
Checking for the Printer Driver (HTML)
DV42: Describes a legacy Mac OS technique avoiding system hangs when using serial drivers on USB systems.
Printing 2000-06-19
Finding your application's directory (HTML)
FL14: Demonstrates finding your application's directory and setting it as the default directory.
File Management 2000-06-19
Open Transport Versions (HTML)
NW64: Lists the current versions of Open Transport and their features.
Networking 2000-05-08
The 'vers' Resource and Your Place in the World (HTML)
TX14: Setting the correct country code in the 'vers' resource to reflect the application's localization.
Resource Management 2000-05-01
aglChoosePixelFormat, The Inside Scoop (HTML)
OGL01: Describes the nuances of aglChoosePixelFormat, including specific information on multi-monitor support.
Graphics & Imaging 2000-04-03
Are there any OSStatus values I can use in my programs? (HTML)
OV02: Describes OSStatus values that generate errors without colliding with reserved Apple system values.
Design Guidelines 1999-11-22
PBLockRange with a zero-length range (HTML)
FL13: Describes the afpRangeOverlap error and a work around.
File Management 1999-11-22
Raw IP and Open Transport 2.5.x (HTML)
Deprecated - NW63: Discusses Open Transport 2.5's change to the behavior of raw IP endpoints with IP_HDRINCL set.
Networking 1999-10-25
Accessing File Control Blocks (HTML) ()
FL10: Shows how to access file control blocks correctly, reiterating not to access FCBs directly.
File Management 1999-10-05
Detecting specific ROM-in-RAM Mac (HTML) ()
Deprecated - HW49: Identifying a Mac by name ("iMac"), and better alternatives for determining specific features ("has Firewire").
Design Guidelines, Runtime Architecture 1999-10-05
Synchronizing Sounds to Video (HTML) ()
Deprecated - SND19: Enabling regular sound callbacks under Mac OS 9 and Sound Manager 4.0.
Music & Audio 1999-10-05
Synchronous SysBeep (HTML) ()
Deprecated - SND18: Obtaining a synchronous SysBeep with Sound Manager 3.1.
Music & Audio 1999-10-05
Using Sound control panel to configure the sound input settings (HTML) ()
SND17: Under Mac OS 9.0, configuring sound input settings isn't possible after application launch.
Music & Audio 1999-10-05
Setting a UserPane's feature (HTML) ()
TB64: Explains how to set up the control attributes when creating controls, and UserPanes in particular.
Human Interface Toolbox 1999-09-27
Allocate and Disk Full Error (HTML) ()
FL12: Discusses a problem with AFP volumes displaying incorrect free space, and returning disk full errors.
File Management, Networking 1999-07-21
MACE Restrictions (HTML) ()
Deprecated - SND16: MACE algorithms only support the compression of 8-bit offset binary sound.
Music & Audio 1999-06-08
Timely Issues - 1904 (HTML) ()
OPS23: Explains why the beginning of the year 1904 was chosen for epoch of the Time global variable.
Resource Management 1999-05-17
Setting a Control's Variant Field (HTML) ()
Deprecated - TB63: Details how to change the variant of a custom control after creating the control.
Human Interface Toolbox 1999-05-03
TCP/IP Option Sizes (HTML) ()
NW62: Enumerates the TCP/IP options and their sizes for Open Transport.
Networking, Porting 1999-04-26
The Initialize Method of Multi-fragment Contextual Menu Plug-ins (HTML) ()
TB60: Explains how to deal with multiple Contextual Menu plug-ins code fragments.
Human Interface Toolbox 1999-04-05
fBroadCastAddr Always Zero (HTML) ()
Deprecated - NW58: Explains why the fBroadcastAddr field may be zero after a call to OTInetGetInterfaceInfo and includes the workaround.
Networking 1999-03-08
Securely Erasing, Accessing and Dismounting a Macintosh Partition (HTML) ()
FL11: Set up a disk for secure erasures. Resources with information on magnetic disks, information recovery.
Data Management, Design Guidelines, File Management, User Experience 1999-01-11
Styled Custom Dialog Items Under Nav Services (HTML) ()
TB58: Describes how to customize the font characteristics of custom items in a NavPutFile dialog.
Human Interface Toolbox 1999-01-11
Bypassing AppendMenu's Meta-character Processing (HTML) ()
TB56: Explains how to bypass AppendMenu's meta-character processing and how to use AppendMenuItemText instead.
Human Interface Toolbox 1998-12-22
Changing Menu Titles (HTML) ()
TB47: Explains how to change a menu's title after its insertion into the menu bar.
Human Interface Toolbox 1998-12-22
Drag Manager: Promising and Tracking (HTML) ()
TB43: Explains why you cannot always obtain the promised flavor data in your drag tracking handler.
Human Interface Toolbox 1998-12-22
Expanding the Set of Menu Item Modifier Keys (HTML) ()
TB53: Explains how to use the shift and option keys with the menu command keys.
Human Interface Toolbox 1998-12-22
Moving the Menu Bar (HTML) ()
Deprecated - TB54: Describes how to move the menubar to another Macintosh Display and why this move is unadvisable.
Human Interface Toolbox, User Experience 1998-12-22
grayishTextOr and Mac OS 8.5 (HTML) ()
Deprecated - QD59: Explains why text drawn using TextMode(grayishTextOr) is never drawn; provides a workaround.
Graphics & Imaging 1998-12-07
Determining volume size (HTML) ()
FL08: Describes methods of determining volume size and free space under Mac OS.
File Management 1998-09-14
Temporary Memory (HTML) ()
ME08: Discusses the tradeoff between temporary memory and system memory for short-lived memory requirements.
Resource Management 1998-08-24
Pop-up Menu CDEFs: The Real Story (HTML) ()
TB42: Explains why you should never allow the pop-up menu CDEFs to create a menu for you.
Human Interface Toolbox 1998-07-30
Ejecting the Volume on Which Your Program Resides (HTML) ()
FL09: Suggests different solutions regarding ejecting a disk on which an application resides.
Data Management, Design Guidelines, File Management, User Experience 1998-07-06
IsCmdChar (HTML) ()
TX12: Describes the routine IsCmdChar, which is useful when testing for Command-period and command-AnyCharacter.
Text & Fonts 1998-07-06
Determining if a Drive is a Network Volume (HTML) ()
NW09: Shows how to determine if a volume is mounted over the network.
File Management, Networking 1998-06-01
Numerous Small Packet Exchanges Resultin Poor TCP Performance (HTML) ()
NW26: Explains why numerous small package exchanges result in poor TCP performance.
Networking 1998-05-25
Capturing Speech Manager Output (HTML) ()
Deprecated - SND15: Capturing the output from the Speech Synthesis Manager to a file.
Music & Audio 1998-05-18
Changing Size of sfnt Cache (HTML) ()
TX11: Describes how to change the size of the sfnt fragment cache.
Typography 1998-04-12
Open Transport Errors -3151/-3160 and Option Management (HTML) ()
NW54: Gives possible causes of errors -3151 and -3160 when making an OptionManagement call to set an endpoint.
Networking 1998-04-12
Recording Compressed Sounds (HTML) ()
Deprecated - SND14: Sound Manager and sound input driver compression options are limited to allow interrupt time recording.
Music & Audio 1998-04-12
siMonitorSource Selector (HTML) ()
Deprecated - SND13: Using the sound output siMonitorAvailable, and siMonitorSource selectors.
Music & Audio 1998-04-12
siOSTypeInput Selectors (HTML) ()
Deprecated - SND12: The use of siOSTypeInputSource, and siOSTypeInputAvailable selectors and extracting the siOSTypeInputAvailable OSTypes returned.
Music & Audio 1998-04-12
Creating Double-byte Bitmap Fonts (HTML) ()
TX10: Some information about converting to the 'NFNT' and 'sbit' font formats.
Typography 1998-02-10
Parsing the PICT File Format (HTML) ()
Deprecated - QD56: Explains where to find information on the PICT file format and warns against parsing a PICT file.
Graphics & Imaging 1998-02-10
Setting Audio Input Gain (HTML) ()
Deprecated - SND11: Setting audio input gain under Mac OS 8.1.
Music & Audio 1998-02-10